package com.udima.reglocation.util;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import com.udima.reglocation.entities.UserSession;

/**
 * 
 * Clase para el manejo de la sesión del usuario
 * 
 * @author luis
 *
 */
public class UserSessionHandler {

	private static final String PREFS_ID = "com.udima.reglocation";
	private static final String USERSESSIONPROP_USERID = PREFS_ID + "userId";
	private static final String USERSESSIONPROP_TOKEN = PREFS_ID + "sessionToken";

	private Context appContext;

	/**
	 * Constructor de la clase
	 *  
	 * @param context Proporciona información de la clase
	 */
	public UserSessionHandler(Context context) {
		this.appContext = context;
	}

	/**
	 * 
	 * Método que recupera valores de la sesión actual
	 * 
	 * @return Usersession Valores de la sesión recuperada
	 */
	public UserSession retrieveUserSession() {
		UserSession res = null;
		if (appContext != null) {
			SharedPreferences pref = appContext.getSharedPreferences(PREFS_ID, Activity.MODE_PRIVATE);
			if (pref != null) {
				
				String userId = pref.getString(USERSESSIONPROP_USERID, null);
				String sessionToken = pref.getString(USERSESSIONPROP_TOKEN, null);
				if(userId!=null && sessionToken!=null) {
					res = new UserSession();
					res.setUserId(userId);
					res.setSessionToken(sessionToken);
				}
			}
		}
		return res;
	}

	/**
	 * 
	 * Clase que registra valores relativos a la sesión actual
	 * 
	 * @param session Valores de la sesión actual
	 */
	public void storeUserSession(UserSession session) {
		if (appContext != null) {
			SharedPreferences pref = appContext.getSharedPreferences(PREFS_ID, Activity.MODE_PRIVATE);
			if (pref != null) {
				Editor editor = pref.edit();

				// Almacenamiento del id del usuario y el token de la sesión en
				// las SharedPreferences
				editor.putString(USERSESSIONPROP_USERID, session.getUserId()); 
				editor.putString(USERSESSIONPROP_TOKEN, session.getSessionToken());

				// Guardado de los cambios en SharedPreferences
				editor.commit();
			}

		}
	}
}
